home *** CD-ROM | disk | FTP | other *** search
/ Komputer for Alle 2004 #2 / K-CD-2-2004.ISO / OpenOffice Sv / f_0397 / python-core-2.2.2 / lib / test / test_atexit.py < prev    next >
Encoding:
Python Source  |  2003-07-18  |  958 b   |  63 lines

  1. # Test the atexit module.
  2. from test_support import TESTFN, vereq
  3. import atexit
  4. from os import popen, unlink
  5. import sys
  6.  
  7. input = """\
  8. import atexit
  9.  
  10. def handler1():
  11.     print "handler1"
  12.  
  13. def handler2(*args, **kargs):
  14.     print "handler2", args, kargs
  15.  
  16. atexit.register(handler1)
  17. atexit.register(handler2)
  18. atexit.register(handler2, 7, kw="abc")
  19. """
  20.  
  21. fname = TESTFN + ".py"
  22. f = file(fname, "w")
  23. f.write(input)
  24. f.close()
  25.  
  26. p = popen("%s %s" % (sys.executable, fname))
  27. output = p.read()
  28. p.close()
  29. vereq(output, """\
  30. handler2 (7,) {'kw': 'abc'}
  31. handler2 () {}
  32. handler1
  33. """)
  34.  
  35. input = """\
  36. def direct():
  37.     print "direct exit"
  38.  
  39. import sys
  40. sys.exitfunc = direct
  41.  
  42. # Make sure atexit doesn't drop
  43. def indirect():
  44.     print "indirect exit"
  45.  
  46. import atexit
  47. atexit.register(indirect)
  48. """
  49.  
  50. f = file(fname, "w")
  51. f.write(input)
  52. f.close()
  53.  
  54. p = popen("%s %s" % (sys.executable, fname))
  55. output = p.read()
  56. p.close()
  57. vereq(output, """\
  58. indirect exit
  59. direct exit
  60. """)
  61.  
  62. unlink(fname)
  63.